package com.guzhi03;

//插入排序（个人把它看成冒泡排序，只不过加了一段条件和倒着判断）插单泡到

public class Insertion {
    //构造函数（无参）
        public Insertion() {
        }
    //成员方法
        //判断v是否大于w
        public static boolean greater(int v,int w){
            return v>w;
        }
        //交换数组中索引i和所有j的值
        public static void exch(int[]a,int i,int j){
            int temp=a[i];
            a[i]=a[j];
            a[j]=temp;
        }
        //对数组内的元素进行排序
        public static void sort(int[]a){
            //外层循环i指的是已遍历的轮数
            for(int i=1;i<a.length;i++){
                //内层循环指的是数组的索引
                for(int j=i;j>0;j--){
                    if(greater(a[j-1],a[j])){
                        exch(a,j,j-1);
                    }else{
                        break;//加了一段条件，能提前终止内层循环，优化代码
                    }
                }
            }
        }
}
